(storage) OperatorPanel._getOperatorStorage().self | (storage) OperatorPanel.approveOperator(address,address,uint256).self | _getOperatorStorage() (storage) OperatorPanel.disapproveOperator(address,address,uint256).self | _getOperatorStorage() (storage) ViewPort.getOrderbookCollateral(address,uint256).clearingHouse | StorageLib.loadClearingHouse() (storage) ViewPort.getAccountValue(address,uint256).clearingHouse | StorageLib.loadClearingHouse() (storage) ViewPort.getNextEmptySubaccount(address).clearingHouse | StorageLib.loadClearingHouse() (storage) ViewPort.getOpenInterest(bytes32).metadata | StorageLib.loadMarketMetadata(asset) (storage) ViewPort.getOpenInterestBook(bytes32).book | StorageLib.loadBook(asset) (storage) ViewPort.getOpenInterestBackstopBook(bytes32).book | StorageLib.loadBackstopBook(asset) (storage) ViewPort.getFundingClamps(bytes32).settings | StorageLib.loadFundingRateSettings(asset) (storage) LiquidatorPanel.liquidate(bytes32,address,uint256).clearingHouse | StorageLib.loadClearingHouse() (r*)
🔗 MarketLib.liquidate | 🎯#L176 | result = CLOBLib.placeOrder(account,PlaceOrderArgs({subaccount:subaccount,asset:self.asset,side:side,limitPrice:0,amount:amount,baseDenominated:true,tif:TiF.IOC,expiryTime:0,clientOrderId:0,reduceOnly:true}),bookType)
(r)
🔗 LiquidatorPanel.liquidate | 🎯💥❌ ['onlyLiquidator', 'onlyActiveProtocol']#L202 | _emitLiquidationEvent({asset:asset,account:account,subaccount:subaccount,side:cache.side,quoteTraded:cache.fillResult.quoteTraded,baseTraded:cache.fillResult.baseTraded,rpnl:cache.positionResult.rpnl,margin:cache.margin,fee:fee,liquidationType:LiquidationType.LIQUIDATEE})
(storage) LiquidatorPanel.backstopLiquidate(bytes32,address,uint256).clearingHouse | StorageLib.loadClearingHouse() (r*)
🔗 MarketLib.liquidate | 🎯#L176 | result = CLOBLib.placeOrder(account,PlaceOrderArgs({subaccount:subaccount,asset:self.asset,side:side,limitPrice:0,amount:amount,baseDenominated:true,tif:TiF.IOC,expiryTime:0,clientOrderId:0,reduceOnly:true}),bookType)
(r)
🔗 LiquidatorPanel.backstopLiquidate | 🎯💥❌ ['onlyBackstopLiquidator', 'onlyActiveProtocol']#L268 | _emitLiquidationEvent({asset:asset,account:account,subaccount:subaccount,side:cache.side,quoteTraded:cache.fillResult.quoteTraded,baseTraded:cache.fillResult.baseTraded,rpnl:cache.positionResult.rpnl,margin:cache.margin,fee:fee,liquidationType:LiquidationType.BACKSTOP_LIQUIDATEE})
(storage) LiquidatorPanel.deleverage(bytes32,DeleveragePair[]).clearingHouse | StorageLib.loadClearingHouse() (storage) LiquidatorPanel.delistClose(bytes32,Account[]).clearingHouse | StorageLib.loadClearingHouse() (storage) LiquidatorPanel.delistClose(bytes32,Account[]).market | clearingHouse.market[asset] (storage) LiquidatorPanel._delistClose(ClearingHouse,Market,bytes32,Account).clearingHouse | (storage) LiquidatorPanel._delistClose(ClearingHouse,Market,bytes32,Account).market | (storage) LiquidatorPanel._deleveragePair(ClearingHouse,bytes32,DeleveragePair).clearingHouse | (r*)
🔗 LiquidatorPanel._deleveragePair | 🎯#L446 | _deleverage(clearingHouse,__DeleverageParams__({account:pair.maker.account,subaccount:pair.maker.subaccount,asset:asset,assets:cache.makerAssets,positions:cache.makerPositions,positionIdx:makerPositionIdx,baseTraded:cache.baseAmount,quoteTraded:cache.quoteAmount,margin:cache.makerMargin,deleverageType:LiquidationType.DELEVERAGE_MAKER}))
(r*)
🔗 LiquidatorPanel._deleveragePair | 🎯#L462 | _deleverage(clearingHouse,__DeleverageParams__({account:pair.taker.account,subaccount:pair.taker.subaccount,asset:asset,assets:cache.takerAssets,positions:cache.takerPositions,positionIdx:takerPositionIdx,baseTraded:cache.baseAmount,quoteTraded:cache.quoteAmount,margin:cache.takerMargin,deleverageType:LiquidationType.DELEVERAGE_TAKER}))
(storage) LiquidatorPanel._deleverage(ClearingHouse,LiquidatorPanel.__DeleverageParams__).clearingHouse | (storage) LiquidatorPanel._validateDeleveragePair(ClearingHouse,LiquidatorPanel.__DeleverageValidationParams__).clearingHouse | (storage) LiquidatorPanel._setupAccountAndValidateLiquidation(ClearingHouse,address,uint256,bytes32,BookType).clearingHouse | (storage) LiquidatorPanel._liquidate(ClearingHouse,bytes32,address,uint256,BookType).clearingHouse | (r*)
🔗 MarketLib.liquidate | 🎯#L176 | result = CLOBLib.placeOrder(account,PlaceOrderArgs({subaccount:subaccount,asset:self.asset,side:side,limitPrice:0,amount:amount,baseDenominated:true,tif:TiF.IOC,expiryTime:0,clientOrderId:0,reduceOnly:true}),bookType)
(storage) LiquidatorPanel._settleBackstopLiquidation(ClearingHouse,bytes32,uint256).clearingHouse | (storage) AdminPanel.initialize(address,uint16[],uint16[]).feeManager | StorageLib.loadFeeManager() (storage) AdminPanel.createMarket(bytes32,MarketParams).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setMarkPrice(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.settleFunding(bytes32).market | StorageLib.loadMarket(asset) (storage) AdminPanel.placeTwapOrder(address,PlaceOrderArgs,SignData).clearingHouse | StorageLib.loadClearingHouse() (storage) AdminPanel.placeTPSLOrder(address,PlaceOrderArgs,Condition,SignData).clearingHouse | StorageLib.loadClearingHouse() (storage) AdminPanel.activateProtocol().clearingHouse | StorageLib.loadClearingHouse() (storage) AdminPanel.deactivateProtocol().clearingHouse | StorageLib.loadClearingHouse() (storage) AdminPanel.activateMarket(bytes32).market | StorageLib.loadMarket(asset) (storage) AdminPanel.deactivateMarket(bytes32).market | StorageLib.loadMarket(asset) (storage) AdminPanel.delistMarket(bytes32).market | StorageLib.loadMarket(asset) (storage) AdminPanel.relistMarket(bytes32).market | StorageLib.loadMarket(asset) (storage) AdminPanel.relistMarket(bytes32).marketMetadata | StorageLib.loadMarketMetadata(asset) (storage) AdminPanel.relistMarket(bytes32).book | StorageLib.loadBook(asset) (storage) AdminPanel.enableCrossMargin(bytes32).market | StorageLib.loadMarket(asset) (storage) AdminPanel.disableCrossMargin(bytes32).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setMaxLeverage(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setMinMarginRatio(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setMinMarginRatio(bytes32,uint256).settings | StorageLib.loadMarketSettings(asset) (storage) AdminPanel.setLiquidationFeeRate(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setDivergenceCap(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setReduceOnlyCap(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setPartialLiquidationThreshold(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setPartialLiquidationRate(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setFundingInterval(bytes32,uint256,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setFundingInterval(bytes32,uint256,uint256).settings | StorageLib.loadFundingRateSettings(asset) (storage) AdminPanel.setResetIterations(bytes32,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setFundingClamps(bytes32,uint256,uint256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setFundingClamps(bytes32,uint256,uint256).settings | StorageLib.loadFundingRateSettings(asset) (storage) AdminPanel.setInterestRate(bytes32,int256).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setMaxNumOrders(bytes32,uint256).book | StorageLib.loadBook(asset) (storage) AdminPanel.setMaxLimitsPerTx(bytes32,uint8).book | StorageLib.loadBook(asset) (storage) AdminPanel.setMinLimitOrderAmountInBase(bytes32,uint256).book | StorageLib.loadBook(asset) (storage) AdminPanel.setTickSize(bytes32,uint256).book | StorageLib.loadBook(asset) (storage) AdminPanel.setMarketSettings(bytes32,MarketSettings).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setMarketSettings(bytes32,MarketSettings).marketSettings | StorageLib.loadMarketSettings(asset) (storage) AdminPanel.setFundingRateSettings(bytes32,FundingRateSettings).market | StorageLib.loadMarket(asset) (storage) AdminPanel.setBookSettings(bytes32,BookSettings).bookSettings | StorageLib.loadBookSettings(asset) (🔀?
bookSettings.maxNumOrders?)
(w)
🔗 CLOBLib.init | 🎯#L115 | dsSettings
.maxNumOrders =
bookSettings.maxNumOrders (🔀?
bookSettings.maxLimitsPerTx?)
(w)
🔗 CLOBLib.init | 🎯#L116 | dsSettings
.maxLimitsPerTx =
bookSettings.maxLimitsPerTx (🔀?
bookSettings.minLimitOrderAmountInBase?)
(w)
🔗 CLOBStorageLib.init | 🎯#L545 | ss
.minLimitOrderAmountInBase = marketSettings.minLimitOrderAmountInBase
(🔀?
bookSettings.minLimitOrderAmountInBase?)
(w)
🔗 CLOBStorageLib.init | 🎯#L545 | ss
.minLimitOrderAmountInBase = marketSettings.minLimitOrderAmountInBase
(🔀?
bookSettings.minLimitOrderAmountInBase?)
(w)
🔗 CLOBLib.init | 🎯#L117 | dsSettings
.minLimitOrderAmountInBase =
bookSettings.minLimitOrderAmountInBase (storage) AdminPanel._validateSig(ClearingHouse,address,bytes,SignData).clearingHouse | (storage) PerpManager.addMargin(address,uint256,uint256).clearingHouse | StorageLib.loadClearingHouse() (storage) PerpManager.removeMargin(address,uint256,uint256).clearingHouse | StorageLib.loadClearingHouse() (storage) PerpManager.setPositionLeverage(bytes32,address,uint256,uint256).clearingHouse | StorageLib.loadClearingHouse() (storage) PerpManager.setPositionLeverage(bytes32,address,uint256,uint256).market | clearingHouse.market[asset] (storage) PerpManager.amendLimitOrder(address,AmendLimitOrderArgs).clearingHouse | StorageLib.loadClearingHouse() (storage) PerpManager.amendLimitOrderBackstop(address,AmendLimitOrderArgs).clearingHouse | StorageLib.loadClearingHouse() (storage) PerpManager.cancelConditionalOrders(address,uint256[]).clearingHouse | StorageLib.loadClearingHouse()Solidity Vars Used
msg.sender
msg.sender @
🔗 OperatorPanel.onlySenderOrOperatorHub#73:13 | 🎯🌈🟢 | msg.sender != account && msg.sender != operatorHub
msg.sender @
🔗 OwnableRoles.renounceRoles#220:9 | 💥💲 | _removeRoles(msg.sender,roles)
msg.sender @
🔗 Launchpad.onlySenderOrOperator#144:13 | 🎯🌈🟢 | msg.sender != gteRouter
msg.sender @
🔗 Ownable._checkOwner#155:13 | 🟢🟩 | ! caller()() == sload(uint256)(_OWNER_SLOT)
msg.sender @
🔗 GTERouter.clobCancel#162:9 | 🎯💥🌀 ['isMarket(ICLOB)'] | clob.cancel(msg.sender,args)
msg.sender @
🔗 GTERouter.clobPlaceOrder#179:9 | 🎯💥🌀 ['isMarket(ICLOB)'] | clob.placeOrder(msg.sender,args)
msg.sender @
🔗 Ownable.requestOwnershipHandover#199:17 | 💥🟢💲 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 Ownable.requestOwnershipHandover#202:17 | 💥🟢💲 | log2(uint256,uint256,uint256,uint256)(0,0,_OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE,caller()())
msg.sender @
🔗 GTERouter.launchpadSell#188:9 | 🎯💥🟢🌀 ['nonReentrant'] | launchpad.sell({account:msg.sender,token:launchToken,recipient:msg.sender,amountInBase:amountInBase,minAmountOutQuote:worstAmountOutQuote})
msg.sender @
🔗 Ownable.cancelOwnershipHandover#213:13 | 💥🟢💲 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 Ownable.cancelOwnershipHandover#216:13 | 💥🟢💲 | log2(uint256,uint256,uint256,uint256)(0,0,_OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE,caller()())
msg.sender @
🔗 GTERouter.launchpadBuy#203:9 | 🎯💥🟢🌀 ['nonReentrant'] | launchpad.buy(ILaunchpad.BuyData({account:msg.sender,token:launchToken,recipient:msg.sender,amountOutBase:amountOutBase,maxAmountInQuote:worstAmountInQuote}))
msg.sender @
🔗 GTERouter._executeClobPostFillOrder#307:9 | 🎯🟢🌀 | result = ICLOB(market).placeOrder(msg.sender,fillArgs)
msg.sender @
🔗 OperatorHub.approveOperatorSpot#28:9 | 🎯💥🟢🌀 | accountManager.approveOperator(msg.sender,operator,roles)
msg.sender @
🔗 OperatorHub.approveOperatorPerps#32:9 | 🎯💥🟢🌀 | perpManager.approveOperator(msg.sender,operator,roles)
msg.sender @
🔗 OperatorHub.disapproveOperatorSpot#36:9 | 🎯💥🟢🌀 | accountManager.disapproveOperator(msg.sender,operator,roles)
msg.sender @
🔗 OperatorHub.disapproveOperatorPerps#40:9 | 🎯💥🟢🌀 | perpManager.disapproveOperator(msg.sender,operator,roles)
msg.sender @
🔗 OwnableRoles._checkRoles#103:13 | 🟢🟩 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 OwnableRoles._checkOwnerOrRoles#121:13 | 🟢🟩 | ! caller()() == sload(uint256)(~ _ROLE_SLOT_SEED)
msg.sender @
🔗 OwnableRoles._checkOwnerOrRoles#124:17 | 🟢🟩 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 OwnableRoles._checkRolesOrOwner#143:13 | 🟢🟩 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 OwnableRoles._checkRolesOrOwner#149:17 | 🟢🟩 | ! caller()() == sload(uint256)(~ _ROLE_SLOT_SEED)
msg.sender @
🔗 ERC4626.deposit#379:9 | 💥 | _deposit(msg.sender,to,assets,shares)
msg.sender @
🔗 ERC4626.mint#396:9 | 💥 | _deposit(msg.sender,to,assets,shares)
msg.sender @
🔗 OwnableRoles.renounceRoles#220:9 | 💥💲 | _removeRoles(msg.sender,roles)
msg.sender @
🔗 ERC4626.redeem#436:9 | 💥 | _withdraw(msg.sender,to,owner,assets,shares)
msg.sender @
🔗 AccountManager.withdrawToPerps#221:13 | 🎯💥🟢🌀 | msg.sender != address(perpManager)
msg.sender @
🔗 PerpManager.depositTo#112:9 | 🎯💥 | StorageLib.loadCollateralManager().depositFreeCollateral({from:msg.sender,to:account,amount:amount})
msg.sender @
🔗 PerpManager.withdrawToSpot#128:13 | 🎯💥🟢 | msg.sender != address(accountManager)
msg.sender @
🔗 GTL.onlyPerpManager#52:13 | 🎯🌈🟢 | msg.sender != perpManager
msg.sender @
🔗 OperatorHelperLib.onlySenderOrOperator#22:13 | 🎯🟩🌀 | msg.sender == account || msg.sender == gteRouter
msg.sender @
🔗 OperatorHelperLib.onlySenderOrOperator#24:9 | 🎯🟩🌀 | rolesPacked = operator.getOperatorRoleApprovals(account,msg.sender)
msg.sender @
🔗 Ownable._checkOwner#155:13 | 🟢🟩 | ! caller()() == sload(uint256)(_OWNER_SLOT)
msg.sender @
🔗 OperatorHelperLib.onlySenderOrOperator#33:13 | 🎯🟩🌀 | msg.sender == account
msg.sender @
🔗 OperatorHelperLib.onlySenderOrOperator#35:9 | 🎯🟩🌀 | rolesPacked = operator.getOperatorRoleApprovals(account,msg.sender)
msg.sender @
🔗 OperatorHelperLib.onlySenderOrOperator#57:13 | 🎯🟩 | msg.sender == account
msg.sender @
🔗 OperatorHelperLib.onlySenderOrOperator#59:9 | 🎯🟩 | rolesPacked = self.operatorRoleApprovals[account][msg.sender]
msg.sender @
🔗 Ownable.requestOwnershipHandover#199:17 | 💥🟢💲 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 Ownable.requestOwnershipHandover#202:17 | 💥🟢💲 | log2(uint256,uint256,uint256,uint256)(0,0,_OWNERSHIP_HANDOVER_REQUESTED_EVENT_SIGNATURE,caller()())
msg.sender @
🔗 Ownable.cancelOwnershipHandover#213:13 | 💥🟢💲 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 Ownable.cancelOwnershipHandover#216:13 | 💥🟢💲 | log2(uint256,uint256,uint256,uint256)(0,0,_OWNERSHIP_HANDOVER_CANCELED_EVENT_SIGNATURE,caller()())
msg.sender @
🔗 OwnableRoles._checkRoles#103:13 | 🟢🟩 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 OwnableRoles._checkOwnerOrRoles#121:13 | 🟢🟩 | ! caller()() == sload(uint256)(~ _ROLE_SLOT_SEED)
msg.sender @
🔗 OwnableRoles._checkOwnerOrRoles#124:17 | 🟢🟩 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 OwnableRoles._checkRolesOrOwner#143:13 | 🟢🟩 | mstore(uint256,uint256)(0x00,caller()())
msg.sender @
🔗 OwnableRoles._checkRolesOrOwner#149:17 | 🟢🟩 | ! caller()() == sload(uint256)(~ _ROLE_SLOT_SEED)
msg.sender @
🔗 CLOBLib._executeBuyOrder#243:9 | 🎯 | ds.incrementLimitsPlaced(msg.sender)
msg.sender @
🔗 CLOBLib._executeSellOrder#288:9 | 🎯 | ds.incrementLimitsPlaced(msg.sender)
this
this @
🔗 Initializable.initializer#71:17 | 🌈🟢 | ! extcodesize(uint256)(address()()) < i_initializer_asm_0 >> 1 == 1
this @
🔗 Launchpad.buy#290:9 | 🎯💥🟢🌀❌ ['nonReentrant', 'onlyBondingActive(address)', 'onlySenderOrOperator(address,SpotOperatorRoles)'] | address(data.quote).safeTransferFrom(buyData.account,address(this),amountInQuote)
this @
🔗 Launchpad.sell#359:9 | 🎯💥🟢🌀❌ ['nonReentrant', 'onlyBondingActive(address)', 'onlySenderOrOperator(address,SpotOperatorRoles)'] | token.safeTransferFrom(account,address(this),amountInBase)
this @
🔗 CollateralManagerLib.depositFreeCollateral#36:9 | 🎯🟢 | USDC.safeTransferFrom(from,address(this),amount)
this @
🔗 GTL.approveOperator#170:9 | 🎯💥🟢🌀❌ ['onlyOwner'] | IOperatorPanel(perpManager).approveOperator({account:address(this),operator:operator,roles:1 << uint256(PerpsOperatorRoles.ADMIN)})
this @
🔗 GTL.disapproveOperator#178:9 | 🎯💥🟢🌀❌ ['onlyOwner'] | IOperatorPanel(perpManager).disapproveOperator({account:address(this),operator:operator,roles:1 << uint256(PerpsOperatorRoles.ADMIN)})
this @
🔗 GTL.totalAssets#202:9 | 🎯💥🟢🟩 | usdc.balanceOf(address(this)) + orderbookCollateral() + freeCollateralBalance() + totalAccountValue()
this @
🔗 GTL.totalAccountValue#210:13 | 🎯💥🟢🟩🌀 | subaccountValue = IViewPort(perpManager).getAccountValue(address(this),subaccounts[i])
this @
🔗 GTL.orderbookCollateral#219:13 | 🎯💥🟢🟩🌀 | collateral += IViewPort(perpManager).getOrderbookCollateral(address(this),subaccounts[i])
this @
🔗 GTL.freeCollateralBalance#224:9 | 🎯💥🟢🟩🌀 | IViewPort(perpManager).getFreeCollateralBalance(address(this))
block.timestamp
block.timestamp @
🔗 Ownable.requestOwnershipHandover#194:13 | 💥🟢💲 | expires = block.timestamp + _ownershipHandoverValidFor()
block.timestamp @
🔗 OrderLib.isExpired#92:9 | 🎯🟩 | self.expiryTime != NULL_TIMESTAMP && self.expiryTime < block.timestamp
block.timestamp @
🔗 OrderLib.isExpired#97:9 | 🎯🟩 | expiryTime != NULL_TIMESTAMP && expiryTime < block.timestamp
block.timestamp @
🔗 PriceHistoryLib.snapshot#29:13 | 🎯 | length > 0 && history.snapshots[length - 1].timestamp == block.timestamp
block.timestamp @
🔗 PriceHistoryLib.snapshot#32:13 | 🎯 | history.snapshots.push(PriceSnapshot(price,0,block.timestamp))
block.timestamp @
🔗 PriceHistoryLib.twap#61:9 | 🎯🟩 | targetTime = block.timestamp - twapInterval
block.timestamp @
🔗 PriceHistoryLib.twap#62:9 | 🎯🟩 | timePeriod = block.timestamp - currentSnapshot.timestamp
block.timestamp @
🔗 MarketLib.init#111:9 | 🎯 | StorageLib.loadFundingRateEngine(asset).lastFundingTime = block.timestamp
block.timestamp @
🔗 AdminPanel._validateSig#708:13 | 🎯🟩 | signData.expiry < block.timestamp
block.timestamp @
🔗 Ownable.requestOwnershipHandover#194:13 | 💥🟢💲 | expires = block.timestamp + _ownershipHandoverValidFor()
block.timestamp @
🔗 MarketLib.getFundingRateComponent#456:9 | 🎯🟩 | indexPrice.fullMulDiv(1e18 + fundingRateEngine.fundingRate.abs().fullMulDiv(block.timestamp - fundingRateEngine.lastFundingTime,fundingRateEngine.getFundingInterval(asset)),1e18)
block.timestamp @
🔗 FundingLib.settleFunding#51:9 | 🎯 | self.lastFundingTime = block.timestamp
block.timestamp @
🔗 FundingLib.getTimeSinceLastFunding#80:9 | 🎯🟩 | block.timestamp - self.lastFundingTime
block.timestamp @
🔗 AdminPanel._validateSig#708:13 | 🎯🟩 | signData.expiry < block.timestamp
self.balance
self.balance @
🔗 InsuranceFundLib.withdraw#44:13 | 🎯 | self.balance < amount
self.balance @
🔗 InsuranceFundLib.claim#35:13 | 🎯 | self.balance < amount
External Calls
PerpManager.depositFromSpot | 🎯💥🟢🌀❌ ['onlySenderOrOperator(address,PerpsOperatorRoles)'] | accountManager.withdrawToPerps(account, amount)